home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / AppleEvents.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  20KB  |  516 lines

  1. /*
  2.      File:        AppleEvents.h
  3.  
  4.      Contains:    AppleEvent Package Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __APPLEEVENTS__
  19. #define __APPLEEVENTS__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  25. #if !FOR_PTR_BASED_AE
  26. #ifndef __MEMORY__
  27. #include <Memory.h>
  28. #endif
  29. #ifndef __MIXEDMODE__
  30. #include <MixedMode.h>
  31. #endif
  32. #ifndef __NOTIFICATION__
  33. #include <Notification.h>
  34. #endif
  35. #ifndef __EVENTS__
  36. #include <Events.h>
  37. #endif
  38. #endif
  39. #endif
  40. #if FOR_SYSTEM8_PREEMPTIVE
  41. #ifndef __KERNEL__
  42. #include <Kernel.h>
  43. #endif
  44. #endif
  45. #ifndef __AEDATAMODEL__
  46. #include <AEDataModel.h>
  47. #endif
  48.  
  49. #ifdef __cplusplus
  50. extern "C" {
  51. #endif
  52.  
  53. #if PRAGMA_IMPORT_SUPPORTED
  54. #pragma import on
  55. #endif
  56.  
  57. #if PRAGMA_ALIGN_SUPPORTED
  58. #pragma options align=mac68k
  59. #endif
  60.  
  61.  
  62. enum {
  63.                                                                 /* Keywords for Apple event parameters */
  64.     keyDirectObject                = '----',
  65.     keyErrorNumber                = 'errn',
  66.     keyErrorString                = 'errs',
  67.     keyProcessSerialNumber        = 'psn ',                        /* Keywords for special handlers */
  68.     keyPreDispatch                = 'phac',                        /* preHandler accessor call */
  69.     keySelectProc                = 'selh',                        /* more selector call */
  70.                                                                 /* Keyword for recording */
  71.     keyAERecorderCount            = 'recr',                        /* available only in vers 1.0.1 and greater */
  72.                                                                 /* Keyword for version information */
  73.     keyAEVersion                = 'vers'                        /* available only in vers 1.0.1 and greater */
  74. };
  75.  
  76. /* Event Class */
  77.  
  78. enum {
  79.     kCoreEventClass                = 'aevt'
  80. };
  81.  
  82. /* Event ID's */
  83.  
  84. enum {
  85.     kAEOpenApplication            = 'oapp',
  86.     kAEOpenDocuments            = 'odoc',
  87.     kAEPrintDocuments            = 'pdoc',
  88.     kAEQuitApplication            = 'quit',
  89.     kAEAnswer                    = 'ansr',
  90.     kAEApplicationDied            = 'obit'
  91. };
  92.  
  93. /* Constants for recording */
  94.  
  95. enum {
  96.     kAEStartRecording            = 'reca',                        /* available only in vers 1.0.1 and greater */
  97.     kAEStopRecording            = 'recc',                        /* available only in vers 1.0.1 and greater */
  98.     kAENotifyStartRecording        = 'rec1',                        /* available only in vers 1.0.1 and greater */
  99.     kAENotifyStopRecording        = 'rec0',                        /* available only in vers 1.0.1 and greater */
  100.     kAENotifyRecording            = 'recr'                        /* available only in vers 1.0.1 and greater */
  101. };
  102.  
  103. #if FOR_SYSTEM8_PREEMPTIVE
  104. #if FOR_PTR_BASED_AE
  105. typedef struct OpaqueAEDispatcherID* AEDispatcherID;
  106. typedef struct OpaqueAEDispatcherRef* AEDispatcherRef;
  107. typedef struct OpaqueAEHandlerTableRef* AEHandlerTableRef;
  108. typedef struct OpaqueAEDelayedSendRef* AEDelayedSendRef;
  109. /* this will be removed by D11E3 or earlier (!!!)*/
  110. typedef AEHandlerTableRef AEHandlerTable;
  111. typedef OptionBits AEReceiveMode;
  112.  
  113. enum {
  114.     kAEReceiveForever            = 0x00000000,
  115.     kAEReceiveOneEvent            = 0x00000001,
  116.     kAEReceiveUntilUnhandledEvent = 0x00000002
  117. };
  118.  
  119. #endif
  120. #endif
  121. /* parameter to AESend */
  122. typedef OptionBits AESendOptions;
  123.  
  124. enum {
  125.     kAENeverInteract            = 0x00000010,                    /* server should not interact with user */
  126.     kAECanInteract                = 0x00000020,                    /* server may try to interact with user */
  127.     kAEAlwaysInteract            = 0x00000030,                    /* server should always interact with user where appropriate */
  128.     kAECanSwitchLayer            = 0x00000040,                    /* interaction may switch layer */
  129.     kAEDontRecord                = 0x00001000,                    /* don't record this event - available only in vers 1.0.1 and greater */
  130.     kAEDontExecute                = 0x00002000,                    /* don't send the event for recording - available only in vers 1.0.1 and greater */
  131.     kAEProcessNonReplyEvents    = 0x00008000                    /* allow processing of non-reply events while awaiting synchronous AppleEvent reply */
  132. };
  133.  
  134. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  135. #if !FOR_PTR_BASED_AE
  136. typedef SInt32 AESendMode;
  137.  
  138. enum {
  139.     kAENoReply                    = 0x00000001,                    /* sender doesn't want a reply to event */
  140.     kAEQueueReply                = 0x00000002,                    /* sender wants a reply but won't wait */
  141.     kAEWaitReply                = 0x00000003,                    /* sender wants a reply and will wait */
  142.     kAEDontReconnect            = 0x00000080,                    /* don't reconnect if there is a sessClosedErr from PPCToolbox */
  143.     kAEWantReceipt                = 0x00000200                    /* (nReturnReceipt) sender wants a receipt of message */
  144. };
  145.  
  146. #endif
  147. #endif
  148. /* Constants for timeout durations */
  149.  
  150. enum {
  151.     kAEDefaultTimeout            = -1,                            /* timeout value determined by AEM */
  152.     kNoTimeOut                    = -2                            /* wait until reply comes back, however long it takes */
  153. };
  154.  
  155. /* priority param of AESend */
  156. typedef SInt16 AESendPriority;
  157.  
  158. enum {
  159.     kAENormalPriority            = 0x00000000,                    /* post message at the end of the event queue */
  160.     kAEHighPriority                = 0x00000001                    /* post message at the front of the event queue (same as nAttnMsg) */
  161. };
  162.  
  163. typedef SInt8 AEEventSource;
  164.  
  165. enum {
  166.     kAEUnknownSource            = 0,
  167.     kAEDirectCall                = 1,
  168.     kAESameProcess                = 2,
  169.     kAELocalProcess                = 3,
  170.     kAERemoteProcess            = 4
  171. };
  172.  
  173. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  174. #if !FOR_PTR_BASED_AE
  175. typedef pascal OSErr (*AEEventHandlerProcPtr)(const AppleEvent *theAppleEvent, AppleEvent *reply, UInt32 handlerRefcon);
  176. typedef pascal Boolean (*AEIdleProcPtr)(EventRecord *theEvent, long *sleepTime, RgnHandle *mouseRgn);
  177. typedef pascal Boolean (*AEFilterProcPtr)(EventRecord *theEvent, long returnID, long transactionID, const AEAddressDesc *sender);
  178.  
  179. #if GENERATINGCFM
  180. typedef UniversalProcPtr AEEventHandlerUPP;
  181. typedef UniversalProcPtr AEIdleUPP;
  182. typedef UniversalProcPtr AEFilterUPP;
  183. #else
  184. typedef AEEventHandlerProcPtr AEEventHandlerUPP;
  185. typedef AEIdleProcPtr AEIdleUPP;
  186. typedef AEFilterProcPtr AEFilterUPP;
  187. #endif
  188.  
  189. enum {
  190.     uppAEEventHandlerProcInfo = kPascalStackBased
  191.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  192.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(const AppleEvent *)))
  193.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(AppleEvent *)))
  194.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(UInt32))),
  195.     uppAEIdleProcInfo = kPascalStackBased
  196.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  197.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(EventRecord *)))
  198.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long *)))
  199.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(RgnHandle *))),
  200.     uppAEFilterProcInfo = kPascalStackBased
  201.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  202.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(EventRecord *)))
  203.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  204.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  205.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(const AEAddressDesc *)))
  206. };
  207.  
  208. #if GENERATINGCFM
  209. #define NewAEEventHandlerProc(userRoutine)        \
  210.         (AEEventHandlerUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppAEEventHandlerProcInfo, GetCurrentArchitecture())
  211. #define NewAEIdleProc(userRoutine)        \
  212.         (AEIdleUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppAEIdleProcInfo, GetCurrentArchitecture())
  213. #define NewAEFilterProc(userRoutine)        \
  214.         (AEFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppAEFilterProcInfo, GetCurrentArchitecture())
  215. #else
  216. #define NewAEEventHandlerProc(userRoutine)        \
  217.         ((AEEventHandlerUPP) (userRoutine))
  218. #define NewAEIdleProc(userRoutine)        \
  219.         ((AEIdleUPP) (userRoutine))
  220. #define NewAEFilterProc(userRoutine)        \
  221.         ((AEFilterUPP) (userRoutine))
  222. #endif
  223.  
  224. #if GENERATINGCFM
  225. #define CallAEEventHandlerProc(userRoutine, theAppleEvent, reply, handlerRefcon)        \
  226.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppAEEventHandlerProcInfo, (theAppleEvent), (reply), (handlerRefcon))
  227. #define CallAEIdleProc(userRoutine, theEvent, sleepTime, mouseRgn)        \
  228.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppAEIdleProcInfo, (theEvent), (sleepTime), (mouseRgn))
  229. #define CallAEFilterProc(userRoutine, theEvent, returnID, transactionID, sender)        \
  230.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppAEFilterProcInfo, (theEvent), (returnID), (transactionID), (sender))
  231. #else
  232. #define CallAEEventHandlerProc(userRoutine, theAppleEvent, reply, handlerRefcon)        \
  233.         (*(userRoutine))((theAppleEvent), (reply), (handlerRefcon))
  234. #define CallAEIdleProc(userRoutine, theEvent, sleepTime, mouseRgn)        \
  235.         (*(userRoutine))((theEvent), (sleepTime), (mouseRgn))
  236. #define CallAEFilterProc(userRoutine, theEvent, returnID, transactionID, sender)        \
  237.         (*(userRoutine))((theEvent), (returnID), (transactionID), (sender))
  238. #endif
  239. #endif
  240. #endif
  241. #if FOR_SYSTEM8_PREEMPTIVE
  242. #if FOR_PTR_BASED_AE
  243. typedef OSStatus (*AEEventHandlerProc)(const AppleEvent *theAppleEvent, AppleEvent *reply, void *handlerRefcon, AEHandlerTableRef handlerTable);
  244. #endif
  245. #endif
  246. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  247. #if !FOR_PTR_BASED_AE
  248. /*
  249. *************************************************************************
  250.   The next couple of calls are basic routines used to create, send,
  251.   and process AppleEvents. 
  252. *************************************************************************
  253. */
  254. extern pascal OSErr AESend(const AppleEvent *theAppleEvent, AppleEvent *reply, AESendMode sendMode, AESendPriority sendPriority, long timeOutInTicks, AEIdleUPP idleProc, AEFilterUPP filterProc)
  255.  THREEWORDINLINE(0x303C, 0x0D17, 0xA816);
  256.  
  257. extern pascal OSErr AEProcessAppleEvent(const EventRecord *theEventRecord)
  258.  THREEWORDINLINE(0x303C, 0x021B, 0xA816);
  259.  
  260. #endif
  261. #endif
  262. #if FOR_SYSTEM8_PREEMPTIVE
  263. #if FOR_PTR_BASED_AE
  264. /*
  265. *************************************************************************
  266.   The next set of calls are basic routines used to send and process AppleEvents. 
  267. *************************************************************************
  268. */
  269. /*
  270.  the reply param MUST be created by the caller if a reply is requested
  271.  otherwise, the caller must specify nil, or a NULL AppleEvent, if no reply is requested
  272. */
  273. extern OSStatus AESendEvent(const AppleEvent *theAppleEvent, AppleEvent *reply, AESendOptions sendOpts, AESendPriority sendPriority, Duration timeoutDuration);
  274.  
  275. extern OSStatus AESendEventQueueReply(const AppleEvent *theAppleEvent, const AEAddressDesc *replyAddress, AESendOptions sendOpts, AESendPriority sendPriority);
  276.  
  277. /*
  278.  the reply param MUST be created by the caller if a reply is requested
  279.  otherwise, the caller must specify nil, or a NULL AppleEvent, if no reply is requested
  280. */
  281. extern OSStatus AESendEventToSelf(const AppleEvent *theAppleEvent, AppleEvent *reply, AEDispatcherRef whichDispatcher, AESendOptions sendOpts);
  282.  
  283. extern OSStatus AESendDelayed(const AppleEvent *theAppleEvent, Duration delayForSend, AEDelayedSendRef *delayedSend);
  284.  
  285. extern OSStatus AECancelDelayedSend(AEDelayedSendRef delayedSend);
  286.  
  287. /*
  288. *************************************************************************
  289.   The next couple of calls are for causing kernel asynchronous completion 
  290.   notifications to send an AppleEvent when they fire. 
  291. *************************************************************************
  292. */
  293. extern OSStatus AECreateNotifier(const AppleEvent *theAppleEvent, KernelNotification *theNotification);
  294.  
  295. extern OSStatus AEDisposeNotifier(const KernelNotification *theNotification);
  296.  
  297. #endif
  298. #endif
  299. /*
  300.  Note: during event processing, an event handler may realize that it is likely
  301.  to exceed the client's timeout limit. Passing the reply to this
  302.  routine causes a wait event to be generated that asks the client
  303.  for more time. 
  304. */
  305. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  306. extern pascal OSErr AEResetTimer(const AppleEvent *reply)
  307.  THREEWORDINLINE(0x303C, 0x0219, 0xA816);
  308.  
  309. #endif
  310. /*
  311. *************************************************************************
  312.   The following three calls are used to allow applications to behave
  313.   courteously when a user interaction such as a dialog box is needed. 
  314. *************************************************************************
  315. */
  316. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  317. typedef SInt8 AEInteractAllowed;
  318.  
  319. enum {
  320.     kAEInteractWithSelf            = 0,
  321.     kAEInteractWithLocal        = 1,
  322.     kAEInteractWithAll            = 2
  323. };
  324.  
  325. extern pascal OSErr AEGetInteractionAllowed(AEInteractAllowed *level)
  326.  THREEWORDINLINE(0x303C, 0x021D, 0xA816);
  327.  
  328. extern pascal OSErr AESetInteractionAllowed(AEInteractAllowed level)
  329.  THREEWORDINLINE(0x303C, 0x011E, 0xA816);
  330.  
  331. #endif
  332. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  333. #if !FOR_PTR_BASED_AE
  334. extern pascal OSErr AEInteractWithUser(long timeOutInTicks, NMRecPtr nmReqPtr, AEIdleUPP idleProc)
  335.  THREEWORDINLINE(0x303C, 0x061C, 0xA816);
  336.  
  337. #endif
  338. #endif
  339. #if FOR_SYSTEM8_PREEMPTIVE
  340. #if FOR_PTR_BASED_AE
  341. /*
  342. *************************************************************************
  343.   These calls are used to create and dispose Apple event handler tables,
  344.   as well as to install, get and remove handlers from them.
  345. *************************************************************************
  346. */
  347. extern OSStatus AENewHandlerTable(AEHandlerTableRef *newTable, void *refCon);
  348.  
  349. extern OSStatus AENewFilterHandlerTable(AEHandlerTableRef *newTable, void *refCon);
  350.  
  351. extern OSStatus AEShareHandlerTable(AEHandlerTableRef table, void *newRefcon, AEHandlerTableRef *newSharedReference);
  352.  
  353. extern OSStatus AEDisposeHandlerTable(AEHandlerTableRef table);
  354.  
  355. extern OSStatus AEGetHandlerTableRefCon(AEHandlerTableRef table, void **refCon);
  356.  
  357. extern OSStatus AEInstallHandler(AEHandlerTableRef table, AEEventClass handlerClass, AEEventID handlerID, AEEventHandlerProc handler, void *handlerRefcon);
  358.  
  359. extern OSStatus AERemoveHandler(AEHandlerTableRef table, AEEventClass handlerClass, AEEventID handlerID, AEEventHandlerProc handler);
  360.  
  361. extern OSStatus AEGetHandler(AEHandlerTableRef table, AEEventClass handlerClass, AEEventID handlerID, AEEventHandlerProc *handler, void **handlerRefcon);
  362.  
  363. /*
  364. *************************************************************************
  365.   These calls are used to setup and get events from Apple event dispatchers.
  366. *************************************************************************
  367. */
  368. extern AEDispatcherRef AEGetDefaultDispatcher(void );
  369.  
  370. extern OSStatus AECreateEventDispatcher(AEDispatcherRef *newDispatcher, MemAllocatorRef allocator);
  371.  
  372. extern OSStatus AEDisposeEventDispatcher(AEDispatcherRef deadDispatcher);
  373.  
  374. extern OSStatus AEGetEventDispatcherID(AEDispatcherRef dispatcher, AEDispatcherID *globalIdentity);
  375.  
  376. extern OSStatus AEPushDispatcherHandlerTable(AEDispatcherRef dispatcher, AEHandlerTableRef table);
  377.  
  378. extern OSStatus AEPopDispatcherHandlerTable(AEDispatcherRef dispatcher, AEHandlerTableRef *table);
  379.  
  380. extern OSStatus AEGetDispatcherTopHandlerTable(AEDispatcherRef dispatcher, AEHandlerTableRef *table);
  381.  
  382. extern OSStatus AEReceive(AEDispatcherRef waitDispatcher, AEReceiveMode receiveMode);
  383.  
  384. #endif
  385. #endif
  386. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  387. #if !FOR_PTR_BASED_AE
  388. /*
  389. *************************************************************************
  390.   These calls are used to set up and modify the event dispatch table.
  391. *************************************************************************
  392. */
  393. extern pascal OSErr AEInstallEventHandler(AEEventClass theAEEventClass, AEEventID theAEEventID, AEEventHandlerUPP handler, long handlerRefcon, Boolean isSysHandler)
  394.  THREEWORDINLINE(0x303C, 0x091F, 0xA816);
  395.  
  396. extern pascal OSErr AERemoveEventHandler(AEEventClass theAEEventClass, AEEventID theAEEventID, AEEventHandlerUPP handler, Boolean isSysHandler)
  397.  THREEWORDINLINE(0x303C, 0x0720, 0xA816);
  398.  
  399. extern pascal OSErr AEGetEventHandler(AEEventClass theAEEventClass, AEEventID theAEEventID, AEEventHandlerUPP *handler, long *handlerRefcon, Boolean isSysHandler)
  400.  THREEWORDINLINE(0x303C, 0x0921, 0xA816);
  401.  
  402. /*
  403. *************************************************************************
  404.  The following four calls are available for applications which need more
  405.  sophisticated control over when and how events are processed. Applications
  406.  which implement multi-session servers or which implement their own
  407.  internal event queueing will probably be the major clients of these
  408.  routines. They can be called from within a handler to prevent the AEM from
  409.  disposing of the AppleEvent when the handler returns. They can be used to
  410.  asynchronously process the event (as MacApp does).
  411. *************************************************************************
  412. */
  413. extern pascal OSErr AESuspendTheCurrentEvent(const AppleEvent *theAppleEvent)
  414.  THREEWORDINLINE(0x303C, 0x022B, 0xA816);
  415.  
  416. /*
  417.  Note: The following routine tells the AppleEvent manager that processing
  418.  is either about to resume or has been completed on a previously suspended
  419.  event. The procPtr passed in as the dispatcher parameter will be called to
  420.  attempt to redispatch the event. Several constants for the dispatcher
  421.  parameter allow special behavior. They are:
  422.       - kAEUseStandardDispatch means redispatch as if the event was just
  423.       received, using the standard AppleEvent dispatch mechanism.
  424.       - kAENoDispatch means ignore the parameter.
  425.          Use this in the case where the event has been handled and no
  426.       redispatch is needed.
  427.       - non nil means call the routine which the dispatcher points to.
  428. */
  429. /* Constants for Refcon in AEResumeTheCurrentEvent with kAEUseStandardDispatch */
  430.  
  431. enum {
  432.     kAEDoNotIgnoreHandler        = 0x00000000,
  433.     kAEIgnoreAppPhacHandler        = 0x00000001,                    /* available only in vers 1.0.1 and greater */
  434.     kAEIgnoreAppEventHandler    = 0x00000002,                    /* available only in vers 1.0.1 and greater */
  435.     kAEIgnoreSysPhacHandler        = 0x00000004,                    /* available only in vers 1.0.1 and greater */
  436.     kAEIgnoreSysEventHandler    = 0x00000008,                    /* available only in vers 1.0.1 and greater */
  437.     kAEIngoreBuiltInEventHandler = 0x00000010,                    /* available only in vers 1.0.1 and greater */
  438.     kAEDontDisposeOnResume        = 0x80000000                    /* available only in vers 1.0.1 and greater */
  439. };
  440.  
  441. /* Constants for AEResumeTheCurrentEvent */
  442.  
  443. enum {
  444.     kAENoDispatch                = 0,                            /* dispatch parameter to AEResumeTheCurrentEvent takes a pointer to a dispatch */
  445.     kAEUseStandardDispatch        = 0xFFFFFFFF                    /* table, or one of these two constants */
  446. };
  447.  
  448. extern pascal OSErr AEResumeTheCurrentEvent(const AppleEvent *theAppleEvent, const AppleEvent *reply, AEEventHandlerUPP dispatcher, long handlerRefcon)
  449.  THREEWORDINLINE(0x303C, 0x0818, 0xA816);
  450.  
  451. extern pascal OSErr AEGetTheCurrentEvent(AppleEvent *theAppleEvent)
  452.  THREEWORDINLINE(0x303C, 0x021A, 0xA816);
  453.  
  454. extern pascal OSErr AESetTheCurrentEvent(const AppleEvent *theAppleEvent)
  455.  THREEWORDINLINE(0x303C, 0x022C, 0xA816);
  456.  
  457. #endif
  458. #endif
  459. /*
  460. *************************************************************************
  461.   These calls are used to set up and modify special hooks into the
  462.   AppleEvent manager.
  463. *************************************************************************
  464. */
  465. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  466. #if !FOR_PTR_BASED_AE
  467. extern pascal OSErr AEInstallSpecialHandler(AEKeyword functionClass, UniversalProcPtr handler, Boolean isSysHandler)
  468.  THREEWORDINLINE(0x303C, 0x0500, 0xA816);
  469.  
  470. extern pascal OSErr AERemoveSpecialHandler(AEKeyword functionClass, UniversalProcPtr handler, Boolean isSysHandler)
  471.  THREEWORDINLINE(0x303C, 0x0501, 0xA816);
  472.  
  473. extern pascal OSErr AEGetSpecialHandler(AEKeyword functionClass, UniversalProcPtr *handler, Boolean isSysHandler)
  474.  THREEWORDINLINE(0x303C, 0x052D, 0xA816);
  475.  
  476. #endif
  477. #endif
  478. #if FOR_SYSTEM8_PREEMPTIVE
  479. #if FOR_PTR_BASED_AE
  480. extern OSStatus AEInstallSpecialCallback(AEDispatcherRef dispatcher, AEKeyword functionClass, ProcPtr handler);
  481.  
  482. extern OSStatus AERemoveSpecialCallback(AEDispatcherRef dispatcher, AEKeyword functionClass, ProcPtr handler);
  483.  
  484. extern OSStatus AEGetSpecialCallback(AEDispatcherRef dispatcher, AEKeyword functionClass, ProcPtr *handler);
  485.  
  486. #endif
  487. #endif
  488. /*
  489. *************************************************************************
  490.   This call was added in version 1.0.1. If called with the keyword
  491.   keyAERecorderCount ('recr'), the number of recorders that are
  492.   currently active is returned in 'result'
  493.   (available only in vers 1.0.1 and greater).
  494. *************************************************************************
  495. */
  496. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  497. extern pascal OSErr AEManagerInfo(AEKeyword keyWord, long *result)
  498.  THREEWORDINLINE(0x303C, 0x0441, 0xA816);
  499.  
  500. #endif
  501.  
  502. #if PRAGMA_ALIGN_SUPPORTED
  503. #pragma options align=reset
  504. #endif
  505.  
  506. #if PRAGMA_IMPORT_SUPPORTED
  507. #pragma import off
  508. #endif
  509.  
  510. #ifdef __cplusplus
  511. }
  512. #endif
  513.  
  514. #endif /* __APPLEEVENTS__ */
  515.  
  516.